<?php
	// =================================================
	// Mantiene recursivamente el vector con metadatos y el vector con valores
	// TODO Ver donde se pierden campos, cuando hay campos empty antes de otro
	function recursion($parent,&$metaData,&$resultado,$modelo) {
		//echo '<pre>'; print_r($resultado);echo '</pre>';
		$parent->load->model($modelo);
		$metaDataforeign = $parent->$modelo->getForaneas($metaData);
		if (count($metaDataforeign)>0){
			$auxMeta=array();
			foreach ($metaDataforeign as $campo){
				$parent->load->model($campo['modelo']);
				$auxMeta = array_merge($auxMeta,$parent->$campo['modelo']->getRowMetaData());
			}
	
			foreach($resultado as &$fila){
				$dataforeign= $parent->$modelo->getForaneasData($metaData,$fila);
				$icolumna=0;
				$auxData=array();
				foreach ($dataforeign as $campo){
					$parent->load->model($metaDataforeign[$icolumna]['modelo']);
					$auxData = array_merge($auxData,$parent->$metaDataforeign[$icolumna]['modelo']->secProxy('getRowData',$campo));
					$icolumna++;
				}
				$fila=$parent->$modelo->limpiarForaneasData($metaData,$fila);
				$fila=array_merge($fila,$auxData);
			}
			$metaData=$parent->$modelo->limpiarForaneas($metaData);	
			//print_r($metaData);
			$metaData=array_merge($metaData,$auxMeta);
			recursion($parent,$metaData,$resultado,$modelo);
		}
		
		//echo '<pre>'; print_r($resultado);echo '</pre>';
	}

 	function backtrack($parent,$idpadre, $sinabuelo=false)
    {
		//Le pasan por parametro el modelo de la respuesta, del cual puede obtener el modelo de la pregunta
		$parent->load->model($parent->namemodHijo,'modHijo');
		$aux=$parent->modHijo->getPartof();
		$parent->namemodPadre=$aux['modelo'];
	
		//del modelo de la pregunta puede obtener el modelo de la evaluacion
		$parent->load->model($parent->namemodPadre,'modPadre');
		$parent->metaDataPadre = $parent->modPadre->getMetaData();
		$parent->metaDataHijo=$parent->modHijo->getMetaData();
		$aux=$parent->modPadre->getPartof();
	
		$cantidadTotal = -1;
		if (empty($aux) || $sinabuelo){ //si son solo padre e hijo 

			$parent->namemodAbuelo="";
	
			//una vez que obtiene el modelo de evaluacion, con el id que le pasaron por parametro puede obtener los datos
			$parent->dataAbuelo = array();
	
			//obtiene los datos del padre
			$parent->modPadre->setCondicion($parent->modPadre->getIdKey(),$idpadre);
			$parent->dataPadre = $parent->modPadre->secProxy('getData');
	
		}else{
			$parent->namemodAbuelo=$aux['modelo'];
			$parent->load->model($parent->namemodAbuelo,'modAbuelo');
			//una vez que obtiene el modelo de evaluacion, con el id que le pasaron por parametro puede obtener los datos

			$parent->dataAbuelo = $parent->modAbuelo->secProxy('getRow',$idpadre);
//echo '<pre>'; print_r($parent->namemodAbuelo); echo '</pre>'; exit();
			//obtiene los datos del padre
			$parent->modPadre->setCondicion($parent->modAbuelo->getIdKey(),$idpadre);
			$parent->dataPadre = $parent->modPadre->secProxy('getData');
		}
		//print_r($parent->dataPadre);
		//echo $cantidadTotal;
		//exit();
		return $cantidadTotal;
   }

 /*function aproboCurso($parent,$idcurso,$idusuario)
    {
		//Le pasan por parametro el modelo de la respuesta, del cual puede obtener el modelo de la pregunta
		$parent->load->model('usuxeva','modaux');
		$parent->load->model('evaluacion','modeva');
		$parent->load->model('clase','modclase');
		$parent->load->model('curso','modcurso');
		
		$curso=$parent->modcurso->secProxy('getRow',$idcurso);
		
		$parent->modclase->setCondicion($parent->modcurso->getIdKey(),$idcurso);
		$parent->modclase->setKeyField(true);
		$clases=$parent->modclase->secProxy('getData');
		
		$cantmodaprobados=0;
//echo '<pre>'; print_r($curso); echo '</pre>'; exit();
		$cantmod=$curso['cantclases'];
		foreach ($clases as $clase) {
			$parent->modeva->setCondicion($parent->modclase->getIdKey(),$clase[$parent->modclase->getIdKey()]);
			$parent->modeva->setKeyField(true);
			$evaluaciones=$parent->modeva->secProxy('getData');
			$flag = true;
			foreach ($evaluaciones as $evaluacion) {
				$resultado=$parent->modaux->porcentajeMasAlto($evaluacion[$parent->modeva->getIdKey()],$idusuario);
				if ($resultado['maximo'] < $resultado['necesario']) $flag = false;
			}
			if ($flag) $cantmodaprobados++;
		}
		
		if ($cantmodaprobados >= $cantmod) return true;
		return false;
	
   }*/
?>
